#ifndef ACTIVATIONFUNCTION_H_
#define ACTIVATIONFUNCTION_H_

#include <cmath>

// Função degrau
#define STEP 1
// Função pseudo-linear
#define PSEUDO_LINEAR 2
// Função sigmóide
#define SIGMOID 3

using namespace std;

// Classe que representa uma função de ativação
class Activation
{

public:

    // Constrói uma função de ativação passando seu tipo e um parâmetro opcional
    Activation(int type, double param = 0);
    virtual ~Activation();

    // Chama a função de ativação correspondente
    double operator()(double output);

private:

    int type;
    double param;

};

#endif /* ACTIVATIONFUNCTION_H_ */
